/*
 * @(#)cn.design.pattern.inversion 2020/4/8/0008
 *
 * Copy Right@ 人人译视界
 */


package cn.design.pattern.inversion;

/**
 * <pre>
 * @author tuwei
 *
 * @version 0.9
 *
 * 修改版本: 0.9
 * 修改日期: 2020/4/8/0008
 * 修改人 :  tuwei
 * 修改说明: 初步完成
 * 复审人 ：
 * </pre>
 */
public class DependencyInversion {
	public static void main(String[] args) {
		Email email = new Email();
		new Person().receive(email);
	}
}

/**
 * 1.如果我们获取消息的对象是微信，短信等等，则新增类，同时Person也要增加响应的接收方法
 * 2.引入一个抽象的接口IReceiver，表示接收者，这样Person类与接口发生依赖
 * 	因为Email，微信等等都属于接收者的范围，他们各自实现IReceiver接口就OK，这样就符合依赖倒转
 */
class Person {
	public void receive(Email email) {
		System.out.println(email.getInfo());
	}
}

class Email {
	public String getInfo() {
		return "电子邮件信息";
	}
}